import { axiosInstance } from './axiosHelper'

/**
 * 溯源信息查询参数
 */
interface TraceabilityQueryParams {
    PageIndex?: number         // 页码（从1开始）
    PageSize?: number          // 每页记录数
    ProductName?: string       // 商品名称（模糊查询）
    ProductionBatch?: string   // 生产批次（精确查询）
    ShelfLife?: string         // 保质期天数（精确查询）
    ProductionLicense?: string // 生产许可证号（精确查询）
    Manufacturer?: string      // 生产企业（模糊查询）
    CreatedBy?: string         // 创建人（模糊查询）
    CreatedTime?: string       // 创建时间（精确查询）
    LastModifiedBy?: string    // 修改人（模糊查询）
    LastModifiedTime?: string  // 修改时间（精确查询）
}

/**
 * 溯源服务
 */
export const traceabilityService = {
    /**
     * 添加溯源信息
     * @param data 溯源信息数据
     * @returns 添加结果
     */
    async addTraceabilityInfo(data: any) {
        try {
            const response = await axiosInstance.post('/api/Traceability/AddTraceabilityInfo', data)
            return response.data
        } catch (error) {
            console.error('添加溯源信息失败:', error)
            throw error
        }
    },

    /**
     * 分页查询溯源信息
     * @param params 查询参数
     * @returns 查询结果
     */
    async queryTraceabilityInfo(params: TraceabilityQueryParams = {}) {
        try {
            const response = await axiosInstance.get('/api/Traceability/QueryTraceabilityInfo', { params })
            return response.data
        } catch (error) {
            console.error('查询溯源信息失败:', error)
            throw error
        }
    },

    /**
     * 根据ID查询溯源信息详情
     * @param id 溯源ID
     * @returns 溯源信息详情
     */
    async getTraceabilityInfoById(id: string) {
        try {
            const response = await axiosInstance.get(`/api/Traceability/GetTraceabilityDetail/${id}`)
            return response.data
        } catch (error) {
            console.error('查询溯源信息详情失败:', error)
            throw error
        }
    },

    /**
     * 更新溯源信息
     * @param id 溯源ID
     * @param data 更新数据
     * @returns 更新结果
     */
    async updateTraceabilityInfo(id: string, data: any) {
        try {
            const response = await axiosInstance.put(`/api/Traceability/UpdateTraceabilityInfo/${id}`, data)
            return response.data
        } catch (error) {
            console.error('更新溯源信息失败:', error)
            throw error
        }
    },

    /**
     * 删除溯源信息
     * @param id 溯源ID
     * @returns 删除结果
     */
    async deleteTraceabilityInfo(id: string) {
        try {
            const response = await axiosInstance.delete(`/api/Traceability/DeleteTraceabilityInfo/${id}`)
            return response.data
        } catch (error) {
            console.error('删除溯源信息失败:', error)
            throw error
        }
    }
} 